<template>
   <!-- 主体部分 -->
    <section class="main">
      <input id="toggle-all" class="toggle-all" type="checkbox" @click="changeAll($event)"/>
      <label for="toggle-all">Mark all as complete</label>
      <ul class="todo-list">
        <!-- 当任务已完成，可以给 li 加上 completed 类，会让元素加上删除线 -->
        <li :class="{completed: item.flag}" v-for="item in list" :key="item.id">
          <div class="view" >
            <!-- 为什么不能用v-model="item.id" 因为在 在vue中需要遵循单向数据流原则， -->
            <!-- 单向数据流原则：
                          1. 父组件的数据发生了改变，子组件会自动跟着变
                          2. 子组件不能直接修改父组件传递过来的props  props是只读的
             -->
            <input class="toggle" type="checkbox" :checked = "item.flag" @change="changeFlag(item.id, $event)" />
            <label>{{item.value}}</label>
            <button class="destroy" @click="delList(item.id)"></button>
          </div>
        </li>
      </ul>
    </section>
</template>
 
<script>
export default {
  name: "TodoListBody",
  props:{
    list:{
      type:Array,
      required: true
    }
  },

  data() {
    return {};
  },
  methods: {
    changeFlag(id, e) {
      this.$emit('changeFlag', id, e.target.checked)
    },
    delList(id) {
      this.$emit('delList', id)
    },
    changeAll(e) {
      this.$emit('changeAll', e.target.checked)
    }
  }
};
</script>

<style scoped>
     
</style>